package oop

fun main() {
    //val延迟赋值
//    println(Test("YELLOW").desc)
    //var延迟赋值

    //空安全,使用?定义一个可为空的变量
    var apple: String? = null
    //?.如果变量为空,不会抛出空指针异常
//    println(apple?.length)
    //!!如果变量为空抛出空指针异常
//    println(apple!!.length)
    //?:变量为空返回操作符后面的值
    println(apple?.length ?: 0)
//    apple = "apple"
//    println(apple.length)
}

class Test(color: String) {
    //延迟赋值
    lateinit var colorDesc: String

    //使用?定义可为空的变量
    var colorDesc1: String? = null

    //by lazy当变量被首次调用时才会执行
    //变量必须是val修饰的,一旦赋值不能修改
    //by是委托关键字
    val desc by lazy {
        println("方法被调用")
        if (color == "RED") "红色" else "非红色"
    }
}